package session;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.Query;

import entidade.Aluno;
import entidade.Professor;
import entidade.Turma;

@Stateless
public class TurmaSession extends GenericSession<Turma>{

	public TurmaSession() {
		super(Turma.class);
	}
	
	@SuppressWarnings("unchecked")
	public List<Aluno> alunosDaTurma(Integer idTurma) {
		Query query = em.createQuery("from Aluno a where a.turma.id = :idTurma");
		query.setParameter("idTurma", idTurma);
		return query.getResultList();
	}
	
	@SuppressWarnings("unchecked")
	public List<Turma> findByProfessor(Integer idProfessor){
//		Professor prof = new Professor();
//		prof.setId(idProfessor);
		Query query = em.createQuery("from Turma t where t.professor.id = :id");
		query.setParameter("id", idProfessor);
		return (List<Turma>) query.getResultList();
	}
	
	public void cleanAlunos(Integer idTurma,Integer novoIdTurma){
		//modo 1
		Query query = em.createQuery("update aluno set turma_id = :novoIdTurma where turma_id = :idTurma");
		query.setParameter("idTurma", idTurma);
		query.setParameter("novoIdTurma", novoIdTurma);
		query.executeUpdate();
		//modo 2 mais complicado
	}
	
	public void cleanAlunos(Integer idTurma){
		cleanAlunos(idTurma, null);
	}
	
	
//	public List<Turma> findByProfessor(Professor prof){
//		return findByProfessor(prof.getId());
//	}
	
}
